suppressPackageStartupMessages(library(tidyverse))
devtools::load_all('~/Google Drive/My Drive/Scripts/R_packages/myUtilities/')
## ℹ Loading myUtilities
library(ggupset)
## Warning: package 'ggupset' was built under R version 4.3.3

Settings

wd <- "~/Google Drive/My Drive/Analysis/METTL2A/"
setwd(wd)

figdir <- paste0(wd, 'Figures/DRS_m3C_sites/Parameters/')
tabledir <- paste0(wd, 'Tables/DRS/Positions/')

theme_set(
  theme_classic(base_size = 7) +
    theme(legend.position = 'bottom')
)

Functions

add_yrange <- function(df) {
  
  new_df <-  df |> 
    mutate(ymax = cumsum(percentage / 100))
  new_df$ymin <- c(0, head(new_df$ymax, n = -1))
  return(new_df)
  
}

donutplot <- function(df, var, col) {
  
  df |> 
    add_yrange() |> 
    ggplot(aes(
      xmin = 2, xmax = 4, ymin = ymin, ymax = ymax,
      fill = {{ col }}, colour = {{ col }}         
    )) +
    geom_rect() +
    coord_polar(theta = 'y') +  
    ggrepel::geom_text_repel(
      aes(label = {{ var }}, y = (ymin + ymax) / 2), x = 1
    ) +
    xlim(c(-1,4)) +
    theme_void() 
  
}

Read data

sampcomp_results <- 
  read_tsv(
    paste0(
      wd, 
      'Tables/DRS/Positions/sampcomp_results_joined_2024-04-09.tsv.gz'
    )
  )
## Rows: 5884004 Columns: 67
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (34): transcript_id, transcript_name, ref_kmer, GMM_cov_type_G, cluster_...
## dbl (33): position, GMM_logit_pvalue_G, KS_dwell_pvalue_G, KS_intensity_pval...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
sampcomp_results
## # A tibble: 5,884,004 × 67
##    transcript_id     transcript_name position ref_kmer GMM_logit_pvalue_G
##    <chr>             <chr>              <dbl> <chr>                 <dbl>
##  1 ENST00000264926.7 RAD18-201           1464 TCACA                    NA
##  2 ENST00000264926.7 RAD18-201           1465 CACAT                     1
##  3 ENST00000264926.7 RAD18-201           1466 ACATA                    NA
##  4 ENST00000264926.7 RAD18-201           1467 CATAA                     1
##  5 ENST00000264926.7 RAD18-201           1468 ATAAA                    NA
##  6 ENST00000264926.7 RAD18-201           1473 AACGA                     1
##  7 ENST00000264926.7 RAD18-201           1475 CGATC                    NA
##  8 ENST00000264926.7 RAD18-201           1486 ACACA                    NA
##  9 ENST00000264926.7 RAD18-201           1501 CAAGA                     1
## 10 ENST00000264926.7 RAD18-201           1502 AAGAC                    NA
## # ℹ 5,883,994 more rows
## # ℹ 62 more variables: KS_dwell_pvalue_G <dbl>, KS_intensity_pvalue_G <dbl>,
## #   GMM_cov_type_G <chr>, GMM_n_clust_G <dbl>, cluster_counts_G <chr>,
## #   Logit_LOR_G <chr>, c1_mean_intensity_G <dbl>, c2_mean_intensity_G <dbl>,
## #   c1_median_intensity_G <dbl>, c2_median_intensity_G <dbl>,
## #   c1_sd_intensity_G <dbl>, c2_sd_intensity_G <dbl>, c1_mean_dwell_G <dbl>,
## #   c2_mean_dwell_G <dbl>, c1_median_dwell_G <dbl>, c2_median_dwell_G <dbl>, …
sampcomp_results |> colnames()
##  [1] "transcript_id"         "transcript_name"       "position"             
##  [4] "ref_kmer"              "GMM_logit_pvalue_G"    "KS_dwell_pvalue_G"    
##  [7] "KS_intensity_pvalue_G" "GMM_cov_type_G"        "GMM_n_clust_G"        
## [10] "cluster_counts_G"      "Logit_LOR_G"           "c1_mean_intensity_G"  
## [13] "c2_mean_intensity_G"   "c1_median_intensity_G" "c2_median_intensity_G"
## [16] "c1_sd_intensity_G"     "c2_sd_intensity_G"     "c1_mean_dwell_G"      
## [19] "c2_mean_dwell_G"       "c1_median_dwell_G"     "c2_median_dwell_G"    
## [22] "c1_sd_dwell_G"         "c2_sd_dwell_G"         "intensity_up_G"       
## [25] "intensity_down_G"      "dwell_up_G"            "dwell_down_G"         
## [28] "GMM_change_G"          "GMM_logit_pvalue_I"    "KS_dwell_pvalue_I"    
## [31] "KS_intensity_pvalue_I" "GMM_cov_type_I"        "GMM_n_clust_I"        
## [34] "cluster_counts_I"      "Logit_LOR_I"           "c1_mean_intensity_I"  
## [37] "c2_mean_intensity_I"   "c1_median_intensity_I" "c2_median_intensity_I"
## [40] "c1_sd_intensity_I"     "c2_sd_intensity_I"     "c1_mean_dwell_I"      
## [43] "c2_mean_dwell_I"       "c1_median_dwell_I"     "c2_median_dwell_I"    
## [46] "c1_sd_dwell_I"         "c2_sd_dwell_I"         "intensity_up_I"       
## [49] "intensity_down_I"      "dwell_up_I"            "dwell_down_I"         
## [52] "GMM_change_I"          "intensity_up"          "intensity_down"       
## [55] "dwell_up"              "dwell_down"            "GMM_change"           
## [58] "middle_base"           "middle_isC"            "have_CC_middle"       
## [61] "have_C3_middle"        "middleC_info"          "transcript_type"      
## [64] "gene_id"               "gene_type"             "gene_name"            
## [67] "seqname"
sampcomp_sig_positions <- 
  sampcomp_results |> 
  select(
    transcript_id, transcript_name, position, ref_kmer, middle_isC,
    intensity_up, intensity_down, dwell_up, dwell_down, GMM_change
  ) |> 
  pivot_longer(
    cols = c(intensity_up:GMM_change),
    names_to = 'parameter', values_to = 'significant'
  ) |> 
  filter(significant == 'common')
sampcomp_sig_positions
## # A tibble: 671 × 7
##    transcript_id     transcript_name position ref_kmer middle_isC parameter   
##    <chr>             <chr>              <dbl> <chr>    <chr>      <chr>       
##  1 ENST00000429711.7 RPL32-204            422 GCCCA    C          intensity_up
##  2 ENST00000647248.2 RPL35A-211           380 ACCCC    C          intensity_up
##  3 ENST00000647248.2 RPL35A-211           381 CCCCT    C          intensity_up
##  4 ENST00000389680.2 MT-RNR1-201           43 ACACA    others     intensity_up
##  5 ENST00000389680.2 MT-RNR1-201           57 CCCCG    C          intensity_up
##  6 ENST00000389680.2 MT-RNR1-201           71 GTTCA    others     intensity_up
##  7 ENST00000389680.2 MT-RNR1-201           73 TCACC    others     intensity_up
##  8 ENST00000389680.2 MT-RNR1-201           75 ACCCT    C          intensity_up
##  9 ENST00000389680.2 MT-RNR1-201           93 ATCAA    C          intensity_up
## 10 ENST00000389680.2 MT-RNR1-201          138 GCTTA    others     intensity_up
## # ℹ 661 more rows
## # ℹ 1 more variable: significant <chr>
sampcomp_sig_positions |> 
  group_by(parameter) |> 
  reframe(n = n()) |> 
  mutate(percent = 100 * n / sum(n))
## # A tibble: 5 × 3
##   parameter          n percent
##   <chr>          <int>   <dbl>
## 1 GMM_change        32   4.77 
## 2 dwell_down         7   1.04 
## 3 dwell_up           6   0.894
## 4 intensity_down    21   3.13 
## 5 intensity_up     605  90.2
sampcomp_sig_positions |> 
  export_tsv(outdir = tabledir)
## 
## Exported to: ~/Google Drive/My Drive/Analysis/METTL2A/Tables/DRS/Positions/sampcomp_sig_positions_2024-07-29.tsv
## # A tibble: 671 × 7
##    transcript_id     transcript_name position ref_kmer middle_isC parameter   
##    <chr>             <chr>              <dbl> <chr>    <chr>      <chr>       
##  1 ENST00000429711.7 RPL32-204            422 GCCCA    C          intensity_up
##  2 ENST00000647248.2 RPL35A-211           380 ACCCC    C          intensity_up
##  3 ENST00000647248.2 RPL35A-211           381 CCCCT    C          intensity_up
##  4 ENST00000389680.2 MT-RNR1-201           43 ACACA    others     intensity_up
##  5 ENST00000389680.2 MT-RNR1-201           57 CCCCG    C          intensity_up
##  6 ENST00000389680.2 MT-RNR1-201           71 GTTCA    others     intensity_up
##  7 ENST00000389680.2 MT-RNR1-201           73 TCACC    others     intensity_up
##  8 ENST00000389680.2 MT-RNR1-201           75 ACCCT    C          intensity_up
##  9 ENST00000389680.2 MT-RNR1-201           93 ATCAA    C          intensity_up
## 10 ENST00000389680.2 MT-RNR1-201          138 GCTTA    others     intensity_up
## # ℹ 661 more rows
## # ℹ 1 more variable: significant <chr>
sampcomp_sig_positions_summarised <- 
  sampcomp_sig_positions |> 
  group_by(transcript_id, position, transcript_name, ref_kmer, middle_isC) |> 
  summarise(parameters = list(parameter)) |> 
  ungroup()
## `summarise()` has grouped output by 'transcript_id', 'position',
## 'transcript_name', 'ref_kmer'. You can override using the `.groups` argument.
sampcomp_sig_positions_summarised
## # A tibble: 644 × 6
##    transcript_id      position transcript_name ref_kmer middle_isC parameters
##    <chr>                 <dbl> <chr>           <chr>    <chr>      <list>    
##  1 ENST00000009589.8       290 RPS20-201       GCCTA    C          <chr [1]> 
##  2 ENST00000199764.7      1697 CEACAM6-201     TTCAG    C          <chr [1]> 
##  3 ENST00000202773.14      326 RPL6-201        GTACC    others     <chr [1]> 
##  4 ENST00000202773.14      328 RPL6-201        ACCCG    C          <chr [1]> 
##  5 ENST00000202773.14      381 RPL6-201        GCCTC    C          <chr [1]> 
##  6 ENST00000215754.8        78 MIF-201         GTCCT    C          <chr [1]> 
##  7 ENST00000215754.8       179 MIF-201         GCCAC    C          <chr [1]> 
##  8 ENST00000215754.8       190 MIF-201         GCCCC    C          <chr [1]> 
##  9 ENST00000215754.8       483 MIF-201         ACCCG    C          <chr [1]> 
## 10 ENST00000224237.9      1193 VIM-201         ACTTT    others     <chr [1]> 
## # ℹ 634 more rows
sampcomp_sig_positions_summarised |> 
  ggplot(aes(x = parameters)) +
  geom_bar() +
  geom_text(stat = 'count', aes(label = after_stat(count)), vjust = -1) +
  ggupset::scale_x_upset(scale_name = 'parameter')

sampcomp_sig_positions_summarised |> 
  filter(parameters == 'intensity_up') |> 
  group_by(middle_isC) |> 
  reframe(n = n()) |> 
  mutate(percent = 100 * n / sum(n))
## # A tibble: 2 × 3
##   middle_isC     n percent
##   <chr>      <int>   <dbl>
## 1 C            481    81.9
## 2 others       106    18.1
sampcomp_sig_positions_summarised2 <- 
  sampcomp_sig_positions_summarised |> 
  group_by(parameters) |>
  reframe(n = n()) |> 
  ungroup() 
sampcomp_sig_positions_summarised2 |> 
  export_tsv(outdir = tabledir)
## 
## Exported to: ~/Google Drive/My Drive/Analysis/METTL2A/Tables/DRS/Positions/sampcomp_sig_positions_summarised2_2024-07-29.tsv
## # A tibble: 12 × 2
##    parameters     n
##    <list>     <int>
##  1 <chr [1]>    587
##  2 <chr [1]>      9
##  3 <chr [2]>     14
##  4 <chr [3]>      2
##  5 <chr [2]>      2
##  6 <chr [1]>     19
##  7 <chr [1]>      2
##  8 <chr [2]>      2
##  9 <chr [1]>      3
## 10 <chr [2]>      1
## 11 <chr [2]>      2
## 12 <chr [3]>      1
sampcomp_sig_positions_summarised2$parameters <- 
  sapply(
    sampcomp_sig_positions_summarised2$parameters,
    function(x) paste(unlist(x), collapse = ',')     
  )
sampcomp_sig_positions_summarised2 |> 
  mutate(percent = 100 * n / sum(n)) |> 
  filter(!grepl('intensity_up', parameters)) |> 
  mutate(sum(n))
## # A tibble: 7 × 4
##   parameters                    n percent `sum(n)`
##   <chr>                     <int>   <dbl>    <int>
## 1 GMM_change                    9   1.40        39
## 2 dwell_up,GMM_change           2   0.311       39
## 3 intensity_down               19   2.95        39
## 4 dwell_up                      2   0.311       39
## 5 dwell_down,GMM_change         2   0.311       39
## 6 dwell_down                    3   0.466       39
## 7 intensity_down,GMM_change     2   0.311       39

Plot

color_palette <- c('#04D2D9', '#64FFFF', '#AFB1B2')
sampcomp_sig_positions_parameter_donut <- 
  sampcomp_sig_positions_summarised2 |> 
  arrange(parameters |> fct_rev()) |> 
  mutate(
    percentage = 100 * n / sum(n),
    color = case_when(
      'intensity_up' == parameters       ~ color_palette[1],
      grepl('intensity_up,', parameters) ~ color_palette[2],
      .default                           = color_palette[3]
    )
  ) |> 
  donutplot(parameters, color) + 
  scale_fill_manual(values = color_palette) +
  scale_color_manual(values = color_palette)
sampcomp_sig_positions_parameter_donut |> 
  ggsave_multiple_formats(
    width = 5, height = 5, fontsize = 7, outdir = figdir
  )
## Warning: ggrepel: 11 unlabeled data points (too many overlaps). Consider increasing max.overlaps
## ggrepel: 11 unlabeled data points (too many overlaps). Consider increasing max.overlaps
## ggrepel: 11 unlabeled data points (too many overlaps). Consider increasing max.overlaps
## ggrepel: 11 unlabeled data points (too many overlaps). Consider increasing max.overlaps
## ggrepel: 11 unlabeled data points (too many overlaps). Consider increasing max.overlaps

# sampcomp_sig_positions_summarised |> 
#   rowwise() |> 
#   mutate(
#     include_intensityup = 'intensity_up' %in% parameters
#   ) |> 
#   group_by(include_intensityup) |> 
#   reframe(n = n()) |> 
#   mutate(percent = 100 * n /sum(n))

Sesison info

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.3.1 (2023-06-16)
##  os       macOS Sonoma 14.5
##  system   aarch64, darwin20
##  ui       X11
##  language (EN)
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       Asia/Tokyo
##  date     2024-07-29
##  pandoc   3.1.1 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  ! package      * version    date (UTC) lib source
##    abind          1.4-5      2016-07-21 [1] CRAN (R 4.3.0)
##    backports      1.4.1      2021-12-13 [1] CRAN (R 4.3.0)
##    bit            4.0.5      2022-11-15 [1] CRAN (R 4.3.0)
##    bit64          4.0.5      2020-08-30 [1] CRAN (R 4.3.0)
##    broom          1.0.5      2023-06-09 [1] CRAN (R 4.3.0)
##    bslib          0.5.1      2023-08-11 [1] CRAN (R 4.3.0)
##    cachem         1.0.8      2023-05-01 [1] CRAN (R 4.3.0)
##    callr          3.7.3      2022-11-02 [1] CRAN (R 4.3.0)
##    car            3.1-2      2023-03-30 [1] CRAN (R 4.3.0)
##    carData        3.0-5      2022-01-06 [1] CRAN (R 4.3.0)
##    class          7.3-22     2023-05-03 [1] CRAN (R 4.3.1)
##    cli            3.6.1      2023-03-23 [1] CRAN (R 4.3.0)
##    codetools      0.2-19     2023-02-01 [1] CRAN (R 4.3.1)
##    colorspace     2.1-0      2023-01-23 [1] CRAN (R 4.3.0)
##    crayon         1.5.2      2022-09-29 [1] CRAN (R 4.3.0)
##    data.table     1.14.8     2023-02-17 [1] CRAN (R 4.3.0)
##    desc           1.4.2      2022-09-08 [1] CRAN (R 4.3.0)
##    devtools       2.4.5      2022-10-11 [1] CRAN (R 4.3.0)
##    dials          1.2.0      2023-04-03 [1] CRAN (R 4.3.0)
##    DiceDesign     1.9        2021-02-13 [1] CRAN (R 4.3.0)
##    digest         0.6.33     2023-07-07 [1] CRAN (R 4.3.0)
##    dplyr        * 1.1.2      2023-04-20 [1] CRAN (R 4.3.0)
##    ellipsis       0.3.2      2021-04-29 [1] CRAN (R 4.3.0)
##    evaluate       0.21       2023-05-05 [1] CRAN (R 4.3.0)
##    fansi          1.0.4      2023-01-22 [1] CRAN (R 4.3.0)
##    farver         2.1.1      2022-07-06 [1] CRAN (R 4.3.0)
##    fastmap        1.1.1      2023-02-24 [1] CRAN (R 4.3.0)
##    forcats      * 1.0.0      2023-01-29 [1] CRAN (R 4.3.0)
##    foreach        1.5.2      2022-02-02 [1] CRAN (R 4.3.0)
##    fs             1.6.3      2023-07-20 [1] CRAN (R 4.3.0)
##    furrr          0.3.1      2022-08-15 [1] CRAN (R 4.3.0)
##    future         1.33.0     2023-07-01 [1] CRAN (R 4.3.0)
##    future.apply   1.11.0     2023-05-21 [1] CRAN (R 4.3.0)
##    generics       0.1.3      2022-07-05 [1] CRAN (R 4.3.0)
##    ggforce        0.4.1      2022-10-04 [1] CRAN (R 4.3.0)
##    ggplot2      * 3.4.3      2023-08-14 [1] CRAN (R 4.3.0)
##    ggpubr         0.6.0      2023-02-10 [1] CRAN (R 4.3.0)
##    ggrepel        0.9.3      2023-02-03 [1] CRAN (R 4.3.0)
##    ggsignif       0.6.4      2022-10-13 [1] CRAN (R 4.3.0)
##    ggupset      * 0.4.0      2024-06-24 [1] CRAN (R 4.3.3)
##    globals        0.16.2     2022-11-21 [1] CRAN (R 4.3.0)
##    glue           1.6.2      2022-02-24 [1] CRAN (R 4.3.0)
##    gower          1.0.1      2022-12-22 [1] CRAN (R 4.3.0)
##    GPfit          1.0-8      2019-02-08 [1] CRAN (R 4.3.0)
##    gprofiler2     0.2.3      2024-02-23 [1] CRAN (R 4.3.1)
##    gtable         0.3.3      2023-03-21 [1] CRAN (R 4.3.0)
##    hardhat        1.3.0      2023-03-30 [1] CRAN (R 4.3.0)
##    highr          0.10       2022-12-22 [1] CRAN (R 4.3.0)
##    hms            1.1.3      2023-03-21 [1] CRAN (R 4.3.0)
##    htmltools      0.5.6      2023-08-10 [1] CRAN (R 4.3.0)
##    htmlwidgets    1.6.2      2023-03-17 [1] CRAN (R 4.3.0)
##    httpuv         1.6.11     2023-05-11 [1] CRAN (R 4.3.0)
##    httr           1.4.7      2023-08-15 [1] CRAN (R 4.3.0)
##    ipred          0.9-14     2023-03-09 [1] CRAN (R 4.3.0)
##    iterators      1.0.14     2022-02-05 [1] CRAN (R 4.3.0)
##    jquerylib      0.1.4      2021-04-26 [1] CRAN (R 4.3.0)
##    jsonlite       1.8.7      2023-06-29 [1] CRAN (R 4.3.0)
##    knitr          1.43       2023-05-25 [1] CRAN (R 4.3.0)
##    labeling       0.4.2      2020-10-20 [1] CRAN (R 4.3.0)
##    later          1.3.1      2023-05-02 [1] CRAN (R 4.3.0)
##    lattice        0.21-8     2023-04-05 [1] CRAN (R 4.3.1)
##    lava           1.7.2.1    2023-02-27 [1] CRAN (R 4.3.0)
##    lazyeval       0.2.2      2019-03-15 [1] CRAN (R 4.3.0)
##    lhs            1.1.6      2022-12-17 [1] CRAN (R 4.3.0)
##    lifecycle      1.0.3      2022-10-07 [1] CRAN (R 4.3.0)
##    listenv        0.9.0      2022-12-16 [1] CRAN (R 4.3.0)
##    lubridate    * 1.9.2      2023-02-10 [1] CRAN (R 4.3.0)
##    magrittr       2.0.3      2022-03-30 [1] CRAN (R 4.3.0)
##    MASS           7.3-60     2023-05-04 [1] CRAN (R 4.3.1)
##    Matrix         1.6-1      2023-08-14 [1] CRAN (R 4.3.0)
##    memoise        2.0.1      2021-11-26 [1] CRAN (R 4.3.0)
##    mime           0.12       2021-09-28 [1] CRAN (R 4.3.0)
##    miniUI         0.1.1.1    2018-05-18 [1] CRAN (R 4.3.0)
##    munsell        0.5.0      2018-06-12 [1] CRAN (R 4.3.0)
##  R myUtilities  * 0.0.0.9000 <NA>       [?] <NA>
##    nnet           7.3-19     2023-05-03 [1] CRAN (R 4.3.1)
##    parallelly     1.36.0     2023-05-26 [1] CRAN (R 4.3.0)
##    parsnip        1.1.1      2023-08-17 [1] CRAN (R 4.3.0)
##    pillar         1.9.0      2023-03-22 [1] CRAN (R 4.3.0)
##    pkgbuild       1.4.2      2023-06-26 [1] CRAN (R 4.3.0)
##    pkgconfig      2.0.3      2019-09-22 [1] CRAN (R 4.3.0)
##    pkgload        1.3.2.1    2023-07-08 [1] CRAN (R 4.3.0)
##    plotly         4.10.4     2024-01-13 [1] CRAN (R 4.3.1)
##    polyclip       1.10-4     2022-10-20 [1] CRAN (R 4.3.0)
##    prettyunits    1.1.1      2020-01-24 [1] CRAN (R 4.3.0)
##    processx       3.8.2      2023-06-30 [1] CRAN (R 4.3.0)
##    prodlim        2023.08.28 2023-08-28 [1] CRAN (R 4.3.0)
##    profvis        0.3.8      2023-05-02 [1] CRAN (R 4.3.0)
##    promises       1.2.1      2023-08-10 [1] CRAN (R 4.3.0)
##    ps             1.7.5      2023-04-18 [1] CRAN (R 4.3.0)
##    purrr        * 1.0.2      2023-08-10 [1] CRAN (R 4.3.0)
##    R6             2.5.1      2021-08-19 [1] CRAN (R 4.3.0)
##    ragg           1.2.5      2023-01-12 [1] CRAN (R 4.3.0)
##    Rcpp           1.0.11     2023-07-06 [1] CRAN (R 4.3.0)
##    readr        * 2.1.4      2023-02-10 [1] CRAN (R 4.3.0)
##    recipes        1.0.8      2023-08-25 [1] CRAN (R 4.3.0)
##    remotes        2.4.2.1    2023-07-18 [1] CRAN (R 4.3.0)
##    rlang          1.1.1      2023-04-28 [1] CRAN (R 4.3.0)
##    rmarkdown      2.24       2023-08-14 [1] CRAN (R 4.3.0)
##    rpart          4.1.19     2022-10-21 [1] CRAN (R 4.3.1)
##    rprojroot      2.0.3      2022-04-02 [1] CRAN (R 4.3.0)
##    rsample        1.2.0      2023-08-23 [1] CRAN (R 4.3.0)
##    rstatix        0.7.2      2023-02-01 [1] CRAN (R 4.3.0)
##    rstudioapi     0.15.0     2023-07-07 [1] CRAN (R 4.3.0)
##    sass           0.4.7      2023-07-15 [1] CRAN (R 4.3.0)
##    scales         1.2.1      2022-08-20 [1] CRAN (R 4.3.0)
##    sessioninfo    1.2.2      2021-12-06 [1] CRAN (R 4.3.0)
##    shiny          1.7.5      2023-08-12 [1] CRAN (R 4.3.0)
##    stringi        1.7.12     2023-01-11 [1] CRAN (R 4.3.0)
##    stringr      * 1.5.0      2022-12-02 [1] CRAN (R 4.3.0)
##    survival       3.5-5      2023-03-12 [1] CRAN (R 4.3.1)
##    svglite        2.1.1      2023-01-10 [1] CRAN (R 4.3.0)
##    systemfonts    1.0.4      2022-02-11 [1] CRAN (R 4.3.0)
##    textshaping    0.3.6      2021-10-13 [1] CRAN (R 4.3.0)
##    tibble       * 3.2.1      2023-03-20 [1] CRAN (R 4.3.0)
##    tidyr        * 1.3.0      2023-01-24 [1] CRAN (R 4.3.0)
##    tidyselect     1.2.0      2022-10-10 [1] CRAN (R 4.3.0)
##    tidyverse    * 2.0.0      2023-02-22 [1] CRAN (R 4.3.0)
##    timechange     0.2.0      2023-01-11 [1] CRAN (R 4.3.0)
##    timeDate       4022.108   2023-01-07 [1] CRAN (R 4.3.0)
##    tune           1.1.2      2023-08-23 [1] CRAN (R 4.3.0)
##    tweenr         2.0.2      2022-09-06 [1] CRAN (R 4.3.0)
##    tzdb           0.4.0      2023-05-12 [1] CRAN (R 4.3.0)
##    urlchecker     1.0.1      2021-11-30 [1] CRAN (R 4.3.0)
##    usethis        2.2.2      2023-07-06 [1] CRAN (R 4.3.0)
##    utf8           1.2.3      2023-01-31 [1] CRAN (R 4.3.0)
##    vctrs          0.6.3      2023-06-14 [1] CRAN (R 4.3.0)
##    viridisLite    0.4.2      2023-05-02 [1] CRAN (R 4.3.0)
##    vroom          1.6.3      2023-04-28 [1] CRAN (R 4.3.0)
##    withr          2.5.0      2022-03-03 [1] CRAN (R 4.3.0)
##    workflows      1.1.3      2023-02-22 [1] CRAN (R 4.3.0)
##    xfun           0.40       2023-08-09 [1] CRAN (R 4.3.0)
##    xtable         1.8-4      2019-04-21 [1] CRAN (R 4.3.0)
##    yaml           2.3.7      2023-01-23 [1] CRAN (R 4.3.0)
##    yardstick      1.2.0      2023-04-21 [1] CRAN (R 4.3.0)
## 
##  [1] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library
## 
##  R ── Package was removed from disk.
## 
## ──────────────────────────────────────────────────────────────────────────────